Package com.flashjs.assetsmanager

Source Code of com.flashjs.assetsmanager.Main

package com.flashjs.assetsmanager;

import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.EncodingAttributes;
import it.sauronsoftware.jave.FFMPEGLocator;
import it.sauronsoftware.jave.InputFormatException;
import it.sauronsoftware.jave.MultimediaInfo;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;

import javax.imageio.ImageIO;

import org.imgscalr.*;

public class Main {
 
  static String pathToSrcFolder;
  static File srcFolder;
  static Float currentScale;
  static Float step;
  static ArrayList<String> soundExtensions;
  static ArrayList<File> soundDirs;
 
  public static void main(String[] arguments) throws IOException, IllegalArgumentException, InputFormatException, EncoderException{
    soundExtensions = new ArrayList<String>();
    soundExtensions.add("mp3");
    soundExtensions.add("ogg");
    soundExtensions.add("wav");
   
    if (arguments.length > 0){
      srcFolder = new File(arguments[0]);
    } else {
      srcFolder = new File(".");
    }
   
    if (srcFolder.exists()){
      processDirectory(new File(srcFolder.getAbsolutePath()  + "/assets/4/"));
      processSoundDirectories(new File(srcFolder.getAbsolutePath()  + "/sounds/"));
    }
  }
 
  static void processSoundDirectories(File srcDir) throws IOException, IllegalArgumentException, InputFormatException, EncoderException{
    soundDirs = new ArrayList<File>();
    for (int i = 0; i < soundExtensions.size(); i++){
      File dir = new File(srcDir, soundExtensions.get(i));
      soundDirs.add(dir);
      if(!dir.exists()){
        dir.mkdir();
           System.out.println("Directory created " + dir.getName());
        }
    }
   
    for (int i = 0; i < soundExtensions.size(); i++){
      processSoundDirectory(soundDirs.get(i));
    }
  }
 
  static void copyDirToAllSoundDirs(File src){
    String relativePath = getRelativePath(src);
   
    for (int i = 0; i < soundDirs.size(); i++){
      File dest = new File(soundDirs.get(i), relativePath);
      if(!dest.exists()){
           dest.mkdir();
        }
    }
  }
 
  static void processSoundDirectory(File src) throws IOException, IllegalArgumentException, InputFormatException, EncoderException{
      if(src.isDirectory()){
        copyDirToAllSoundDirs(src);
        //list all the directory contents
        String files[] = src.list();
        for (String file : files) {
           //construct the src and dest file structure
           File srcFile = new File(src, file);
           //recursive copy
           processSoundDirectory(srcFile);
        }
      }else{
        if (getDirByExtension(getExtension(src)) != null) copyFileToAllExtensions(src);
          //Encode file to all extensions and copy to all folders
      }
  }
 
  static void copyFileToAllExtensions(File file) throws IllegalArgumentException, InputFormatException, EncoderException{
   
    System.out.println("Converting file " + file.getAbsolutePath().replaceAll("sounds//.//sounds", "") + " it exists = " + file.exists());
   
    String extension = getExtension(file);
    if (extension != "mp3"){
      copyFileToMP3(file);
    }
    if (extension != "ogg"){
      copyFileToOgg(file);
    }
  }
 
  static void copyFileToMP3(File source) throws IllegalArgumentException, InputFormatException, EncoderException{
    File target = new File(getDirByExtension("mp3"), changeExtension(getRelativePath(source), ".mp3"));
    if (target.exists()) return;
   
    AudioAttributes audio = new AudioAttributes();
    audio.setCodec("libmp3lame");
    audio.setBitRate(new Integer(64000));
    audio.setChannels(new Integer(2));
    audio.setSamplingRate(new Integer(22050));
   
    EncodingAttributes attrs = new EncodingAttributes();
    attrs.setFormat("mp3");
    attrs.setAudioAttributes(audio);
   
    Encoder encoder = new Encoder(new Myffmpeg());
    encoder.encode(source, target, attrs);
  }
 
  static void copyFileToOgg(File source) throws IllegalArgumentException, InputFormatException, EncoderException{
    File target = new File(getDirByExtension("ogg"), changeExtension(getRelativePath(source), ".ogg"));
    if (target.exists()) return;
   
    AudioAttributes audio = new AudioAttributes();
    audio.setCodec("libvorbis");
    audio.setBitRate(new Integer(64000));
    audio.setChannels(new Integer(2));
    audio.setSamplingRate(new Integer(22050));
   
    EncodingAttributes attrs = new EncodingAttributes();
    attrs.setFormat("ogg");
    attrs.setAudioAttributes(audio);
   
    Encoder encoder = new Encoder(new Myffmpeg());
    encoder.encode(source, target, attrs);
  }
 
  static void copyFileToWav(File source) throws IllegalArgumentException, InputFormatException, EncoderException{
    File target = new File(getDirByExtension("wav"), changeExtension(getRelativePath(source), ".wav"));
    if (target.exists()) return;
    AudioAttributes audio = new AudioAttributes();
    audio.setCodec("pcm_s16le");
    audio.setBitRate(new Integer(128000));
    audio.setChannels(new Integer(2));
    audio.setSamplingRate(new Integer(44100));
    EncodingAttributes attrs = new EncodingAttributes();
    attrs.setFormat("wav");
    attrs.setAudioAttributes(audio);
    Encoder encoder = new Encoder(new Myffmpeg());
    encoder.encode(source, target, attrs);
  }
 
  static File getDirByExtension(String ext){
    for (int i = 0; i < soundDirs.size(); i++){
      String dirPath = soundDirs.get(i).getAbsolutePath();
      if (dirPath.indexOf("sounds/" + ext) != -1){
        return soundDirs.get(i);
      }
    }
    return null;
  }
 
  static String getExtension(File src){
    String formatName = src.getName();
      int pos = formatName.lastIndexOf('.');
      return formatName.substring(pos+1);
  }
 
 
  static String getRelativePath(File file){
    String filePath = file.getAbsolutePath();
    for (int i = 0; i < soundDirs.size(); i++){
      String dirPath = soundDirs.get(i).getAbsolutePath();
      if (filePath.indexOf(dirPath) != -1){
        return filePath.replaceAll(dirPath, "");
      }
    }
    return "";
  }


  static void processDirectory(File srcDir){
    step = new Float(1);
    currentScale = new Float(4);
   
    while(currentScale > 1.0){
      currentScale -= step;
      copyDirectoryStructure(srcDir);
    }
  }

  static void copyDirectoryStructure(File srcDir){
    File dest = new File(srcDir.getParent() + "/" + currentScale.intValue() + "/");
   
    try {
      copyFolder(srcDir, dest);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
 
  public static void copyFolder(File src, File dest)
      throws IOException{
      if(src.isDirectory()){
        //if directory not exists, create it
        if(!dest.exists()){
           dest.mkdir();
           System.out.println("Directory copied from "
                              + src + "  to " + dest);
        }
        //list all the directory contents
        String files[] = src.list();
        for (String file : files) {
           //construct the src and dest file structure
           File srcFile = new File(src, file);
           File destFile = new File(dest, file);
           //recursive copy
           copyFolder(srcFile,destFile);
        }
      }else{             
          BufferedImage srcImage = ImageIO.read(src);
          if (srcImage == null) return;
          BufferedImage destImage = Scalr.resize(srcImage, (int)((srcImage.getWidth() / 4) * currentScale), (int)((srcImage.getHeight() / 4) * currentScale));
             
          String formatName = getExtension(src);
         
          ImageIO.write(destImage, formatName, dest);
         
          srcImage = null;
          destImage = null;
         
          Runtime.getRuntime().gc();
         
          System.out.println("File copied from " + src + " to " + dest);
      }
    }
 
  static String changeExtension(String originalName, String newExtension) {
      int lastDot = originalName.lastIndexOf(".");
      if (lastDot != -1) {
          return originalName.substring(0, lastDot) + newExtension;
      } else {
          return originalName + newExtension;
      }
  }
}
TOP

Related Classes of com.flashjs.assetsmanager.Main

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.